Common Pandas Methods
๐ฆ Creating Data Structuresโ
pd.Series()โ 1D labeled array
pd.Series([10, 20, 30], index=["a", "b", "c"])
pd.DataFrame()โ 2D labeled table
pd.DataFrame({"name": ["Alice"], "age": [25]})
pd.date_range()โ sequence of dates
pd.date_range("2024-01-01", periods=12, freq="M")
๐ Inspecting Dataโ
.head(n)/.tail(n)โ first / last n rows
df.head(10)
.info()โ column dtypes, non-null counts, memory
df.info()
.describe()โ summary statistics for numeric columns
df.describe()
.shapeโ (rows, columns)
df.shape
.dtypesโ data types per column
df.dtypes
.columnsโ column labels
df.columns
.value_counts()โ frequency of unique values
df["city"].value_counts()
.unique()/.nunique()โ unique values / count
df["city"].unique()
df["city"].nunique()
๐ฏ Selection & Indexingโ
.loc[]โ label-based selection
df.loc["a":"c", ["name", "age"]]
.iloc[]โ position-based selection
df.iloc[0:3, 0:2]
.at[]/.iat[]โ fast scalar access
df.at[0, "name"]
df.iat[0, 1]
.query()โ readable filtering
df.query("age > 30 and city == 'Lagos'")
.set_index()/.reset_index()โ change index
df.set_index("name")
df.reset_index()
.sort_values()/.sort_index()โ sorting
df.sort_values("age", ascending=False)
df.sort_index()
๐งน Data Cleaningโ
.isnull()/.notnull()โ detect missing values
df.isnull().sum()
.dropna()โ drop missing values
df.dropna(subset=["age"])
.fillna()โ fill missing values
df.fillna(0)
df["age"].fillna(df["age"].mean())
.interpolate()โ interpolate missing values
df["price"].interpolate()
.duplicated()/.drop_duplicates()โ handle duplicates
df.drop_duplicates(subset=["email"])
.astype()โ change data type
df["age"].astype(int)
pd.to_datetime()โ parse dates
pd.to_datetime(df["date"])
pd.to_numeric()โ convert to numeric (coerce errors)
pd.to_numeric(df["revenue"], errors="coerce")
.straccessor โ string operations
df["name"].str.strip().str.lower()
df["phone"].str.replace("-", "")
df["name"].str.split(" ", expand=True)
.replace()โ replace values
df["gender"].replace({"M": "Male", "F": "Female"})
.clip()โ clip values to range
df["age"].clip(0, 120)
๐ Transforming Dataโ
.apply()โ apply function to column/row
df["age"].apply(lambda x: "Adult" if x >= 18 else "Child")
df.apply(lambda row: row["a"] + row["b"], axis=1)
.map()โ element-wise mapping
df["country"].map({"Nigeria": "NG", "Ghana": "GH"})
.assign()โ add columns (chainable)
df.assign(profit=lambda x: x["revenue"] - x["cost"])
pd.cut()โ bin continuous data
pd.cut(df["age"], bins=[0, 18, 60, 100], labels=["Child", "Adult", "Senior"])
pd.qcut()โ quantile-based binning
pd.qcut(df["score"], q=4, labels=["Q1", "Q2", "Q3", "Q4"])
np.where()/np.select()โ conditional columns
np.where(df["score"] >= 80, "pass", "fail")
๐ Aggregation & Groupingโ
.groupby()โ group data
df.groupby("dept")["salary"].mean()
.agg()โ multiple aggregations
df.groupby("dept").agg(avg_salary=("salary", "mean"), count=("name", "count"))
.transform()โ group-level values, original shape
df.groupby("dept")["salary"].transform("mean")
.filter()โ keep/drop groups
df.groupby("dept").filter(lambda g: len(g) > 1)
.sum(),.mean(),.median(),.min(),.max(),.count(),.std(),.nunique()
df["salary"].sum()
๐ Merging & Joiningโ
pd.concat()โ stack DataFrames
pd.concat([df1, df2], ignore_index=True)
pd.concat([df1, df2], axis=1)
pd.merge()โ SQL-style joins
pd.merge(df1, df2, on="key")
pd.merge(df1, df2, on="key", how="left")
pd.merge(df1, df2, left_on="id", right_on="key")
.join()โ index-based join
df1.join(df2)
๐ Reshapingโ
.pivot()โ long to wide
df.pivot(index="date", columns="product", values="sales")
.pivot_table()โ pivot with aggregation
df.pivot_table(index="date", columns="product", values="sales", aggfunc="sum")
.melt()โ wide to long
df.melt(id_vars="name", var_name="subject", value_name="score")
.stack()/.unstack()โ move index levels
df.stack()
df.unstack()
.explode()โ one row per list element
df.explode("tags")
pd.crosstab()โ frequency table
pd.crosstab(df["gender"], df["city"])
โฐ Time Seriesโ
pd.to_datetime()โ parse dates
pd.to_datetime(df["date"])
.dtaccessor โ extract date components
df["date"].dt.year
df["date"].dt.month
df["date"].dt.day_name()
.resample()โ change frequency
df.resample("M")["revenue"].sum()
.rolling()โ rolling window
df["revenue"].rolling(window=7).mean()
.expanding()โ expanding window
df["revenue"].expanding().sum()
.shift()โ lag/lead values
df["revenue"].shift(1)
.diff()/.pct_change()โ period-over-period change
df["revenue"].diff(1)
df["revenue"].pct_change(1)
๐พ Input / Outputโ
pd.read_csv()/.to_csv()โ CSV
pd.read_csv("data.csv", parse_dates=["date"])
df.to_csv("output.csv", index=False)
pd.read_excel()/.to_excel()โ Excel
pd.read_excel("data.xlsx", sheet_name="Sales")
df.to_excel("output.xlsx", index=False)
pd.read_json()/.to_json()โ JSON
pd.read_json("data.json")
df.to_json("output.json", orient="records")
pd.read_sql()/.to_sql()โ SQL
pd.read_sql("SELECT * FROM orders", engine)
df.to_sql("orders", engine, if_exists="replace")
pd.read_parquet()/.to_parquet()โ Parquet
pd.read_parquet("data.parquet")
df.to_parquet("data.parquet", index=False)
๐ Visualizationโ
.plot()โ basic line plot
df["revenue"].plot(title="Revenue")
.plot(kind="bar")โ bar chart
df.groupby("region")["sales"].sum().plot(kind="bar")
.plot(kind="hist")โ histogram
df["age"].plot(kind="hist", bins=20)
.plot(kind="scatter")โ scatter plot
df.plot(kind="scatter", x="age", y="salary")
.plot(kind="box")โ box plot
df[["salary", "bonus"]].plot(kind="box")
.plot(kind="area")โ area chart
df.plot(kind="area", x="date", y=["a", "b"])
.plot(kind="pie")โ pie chart
df.groupby("category")["sales"].sum().plot(kind="pie")
.plot(subplots=True)โ multiple subplots
df[["revenue", "cost"]].plot(subplots=True)
โก Performanceโ
.memory_usage()โ memory per column
df.memory_usage(deep=True)
pd.to_numeric(downcast=...)โ downcast numeric types
pd.to_numeric(df["age"], downcast="integer")
.astype("category")โ categorical for low-cardinality strings
df["country"].astype("category")
.copy()โ explicit copy (avoid SettingWithCopyWarning)
df[df["age"] > 30].copy()
.eval()โ fast expression evaluation
df.eval("profit = revenue - cost")